Many modern computing machines, including for example desktop or laptop personal computers, employ one or more hard disk drives to store the operating system, application programs and data files. In sonic cases, multiple disk drives may he connected to a single PC as a means to separate operating system from data files, as a dedicated audio-video disk file, or coupled together in a RAID configuration to improve performance and reliability. Disk drives can be deployed internally to the machine, externally, as a removable device, and so on in a wide variety of configurations. For purposes of this application, all such arrangements are considered “attached” drives. In other words, we use the term “attached” herein to mean that data can be transferred between the local bus and the attached drive(s) without the data traversing a network. A removable drive is still considered “attached” for present purposes. Further, in this application, storage devices such as disk drives that are coupled to a host by way of IEEE® 1394, USB, SATA or other types of connections are still considered as directly “attached” as distinguished from network attached.
Regardless of the number, types and arrangements of attached disk drive storage systems, there are many host applications or operations that involve movement of data (or copy) from one location on one disk drive to another location on the same drive, to another logical partition, or to a physically separate disk drive. Other common operations include searching for specific data within files stored on the hard drive(s), or synchronizing files in a backup application. Examples of such operations or applications include file copy, moves, disk drive defragmentation, anti-virus scans, data scan (search), and data migration/conversions.
Known implementations of the above applications require the involvement of the host CPU and can significantly load the host bus to which the disk drive(s) is (are) attached. (We use the terms “host bus” and “local bus” interchangeably in this application. There are many such buses, of which the PCI bus is a well-known example.) Disk operations that burden the CPU and force heavy traffic on the local bus consequently causes other applications not related to the file movement operation to slow down, as the same host data bus used to perform these background operations is also used by other applications. For example, one of the most common complaints about backup and antivirus applications as they exist today is that they are often obtrusive, i.e. they interrupt the current application and often drag high speed computers down in performance due to the amount of data that needs to be sent back and forth across the system bus. Worst still, these basic operations can cause excessive disk swapping to occur if system memory is near full when a scan or backup process begins execution.
To illustrate, FIG. 1 shows a computer and attached disk drives in a simplified conceptual diagram 10. The diagram shows a file copy operation 12 underway, evidenced by a pair of data streams 14, to and from a disk drive 16. In addition, an application 20 is running which causes the CPU 22 to carry out various reading, writing and processing of other data variously stored on drives 26 and 28. Read and write operations involving those drives give rise to additional data streams illustrated as 30, 32. All four data streams in this illustration contribute to traffic over the local bus 34.
The need remains for improvements in computer system performance by intelligent application of hardware and software to better utilize available resources. If the burden imposed on the CPU and its local bus by certain common applications and operations, in particular those involving data transfer to and from attached storage devices, could be alleviated, overall system performance will be significantly improved.
Additional aspects and advantages will be apparent from the following detailed description of preferred embodiments, which proceeds with reference to the accompanying drawings.